/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.uoc.tdp.pac3.client.gui.model;

import edu.uoc.tdp.pac3.bo.IIncidenciaBO;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.List;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;

/**
 * Model de llista abstracte amb els metodes comuns que es fan servir igual a la resta d'implementacions
 * Tenim un metode fillList que omle la llista de S (objecte del domini per exemple Area).
 * @author Gerard
 */
public abstract class AbstractModel<S extends Serializable> implements ListModel {

    private List<S> items;
    
    private IIncidenciaBO bo;

    public AbstractModel() {
    }
    
    public AbstractModel(IIncidenciaBO bo) throws RemoteException {
        this.bo = bo;
        fillList();
    }
    
    protected abstract void fillList() throws RemoteException;
        
    public List<S> getItems() {
        return items;
    }

    public void setItems(List<S> items) {
        this.items = items;
    }

    public int getSize() {
        int i = 0;
        if(items != null){
            i = items.size();
        }
        return i;
    }

    public Object getElementAt(int i) {
        S item = null;
        if(items != null){
            item = items.get(i);
        }
        return item;
    }

    public IIncidenciaBO getBo() {
        return bo;
    }

    public void addListDataListener(ListDataListener ll) {
        
    }

    public void removeListDataListener(ListDataListener ll) {
        
    }
}
